package com.qfedu.job;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class CronTriggerTest {

    public static void main(String[] args) {

        try {
            // 调度器
            Scheduler defaultScheduler = StdSchedulerFactory.getDefaultScheduler();

            // 通过cron表达式定义触发任务的时间规则
            CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/3 * * * * ?");

            // 创建触发器
            CronTrigger cronTrigger = (CronTrigger) TriggerBuilder.newTrigger()
                    .withIdentity("cronTrigger1", "group1")
                    .startAt(DateBuilder.futureDate(5, DateBuilder.IntervalUnit.SECOND)) // 设置触发器开始时间
                    .withSchedule(cronScheduleBuilder)                                          //将时间规则设置给触发器
                    .endAt(DateBuilder.dateOf(22, 0, 0))                     // 设置任务终止的时间
                    .build();

            // 创建任务（JobDetail 用于封装具体的任务）
            JobDetail job = JobBuilder.newJob(MyJob.class).build();

            // 将任务和触发器进行关联
            defaultScheduler.scheduleJob(job, cronTrigger);

            // 启动调度器
            defaultScheduler.start();

        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }
}
